<?php
// 应用公共文件

use app\admin\model\SystemConfig;
use app\common\service\AuthService;
use think\facade\Cache;

if (!function_exists('__url')) {

    /**
     * 构建URL地址
     * @param string $url
     * @param array $vars
     * @param bool $suffix
     * @param bool $domain
     * @return string
     */
    function __url(string $url = '', array $vars = [], $suffix = true, $domain = false)
    {
        return url($url, $vars, $suffix, $domain)->build();
    }
}

if (!function_exists('password')) {

    /**
     * 密码加密算法
     * @param $value 需要加密的值
     * @param $type  加密类型，默认为md5 （md5, hash）
     * @return mixed
     */
    function password($value)
    {
        $value = sha1('blog_') . md5($value) . md5('_encrypt') . sha1($value);
        return sha1($value);
    }

}

if (!function_exists('xdebug')) {

    /**
     * debug调试
     * @deprecated 不建议使用，建议直接使用框架自带的log组件
     * @param string|array $data 打印信息
     * @param string $type 类型
     * @param string $suffix 文件后缀名
     * @param bool $force
     * @param null $file
     */
    function xdebug($data, $type = 'xdebug', $suffix = null, $force = false, $file = null)
    {
        !is_dir(runtime_path() . 'xdebug/') && mkdir(runtime_path() . 'xdebug/');
        if (is_null($file)) {
            $file = is_null($suffix) ? runtime_path() . 'xdebug/' . date('Ymd') . '.txt' : runtime_path() . 'xdebug/' . date('Ymd') . "_{$suffix}" . '.txt';
        }
        file_put_contents($file, "[" . date('Y-m-d H:i:s') . "] " . "========================= {$type} ===========================" . PHP_EOL, FILE_APPEND);
        $str = (is_string($data) ? $data : (is_array($data) || is_object($data)) ? print_r($data, true) : var_export($data, true)) . PHP_EOL;
        $force ? file_put_contents($file, $str) : file_put_contents($file, $str, FILE_APPEND);
    }
}

if (!function_exists('sysconfig')) {

    /**
     * 获取系统配置信息
     * @param $group
     * @param null $name
     * @return array|mixed
     */
    function sysconfig($group, $name = null)
    {
        $where = ['group' => $group];
        $value = empty($name) ? Cache::get("sysconfig_{$group}") : Cache::get("sysconfig_{$group}_{$name}");
        if (empty($value)) {
            if (!empty($name)) {
                $where['name'] = $name;
                $value = \app\admin\model\SystemConfig::where($where)->value('value');
                Cache::tag('sysconfig')->set("sysconfig_{$group}_{$name}", $value, 3600);
            } else {
                $value = \app\admin\model\SystemConfig::where($where)->column('value', 'name');
                Cache::tag('sysconfig')->set("sysconfig_{$group}", $value, 3600);
            }
        }
        return $value;
    }
}

if (!function_exists('array_format_key')) {

    /**
     * 二位数组重新组合数据
     * @param $array
     * @param $key
     * @return array
     */
    function array_format_key($array, $key)
    {
        $newArray = [];
        foreach ($array as $vo) {
            $newArray[$vo[$key]] = $vo;
        }
        return $newArray;
    }

}

if (!function_exists('auth')) {

    /**
     * auth权限验证
     * @param $node
     * @return bool
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\DbException
     * @throws \think\db\exception\ModelNotFoundException
     */
    function auth($node = null)
    {
        $authService = new AuthService(session('admin.id'));
        $check = $authService->checkNode($node);
        return $check;
    }

}
 function getCode($template_id,$qr_id,$content)
{
    $admin_id = session('admin.id');
    $rurl    = 'http://sd.fuyexueshe.com/api/evaluation.elist/getUserWxInfo?admin_id=' . $admin_id . '&template_id=' . $template_id.'&qr_id=' . $qr_id;
    $rurl    = urlencode($rurl);
    $appid = 'wx6b6bf9e43755f020';
    $value = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" . $appid . "&redirect_uri=" . $rurl . "&response_type=code&scope=snsapi_userinfo&forcePopup=true&state=STATE#wechat_redirect";

    //生成二维码图片
    $year = date('Y',time());//年
    $month = date('m',time());//格式化，取出月份
    $day = date('d',time());//日
    $path = ROOT_PATH . 'public';
    $tareUrl = '/image/'.$year.'/'.$month.'/'.$day;
    $filename = time().'.png';
    $url = $path.$tareUrl.'/'.$filename;
    if(!file_exists($url)){
        if(!is_dir($path . $tareUrl)){
            mkdir($path . $tareUrl,0777,true);
        }
        require_once ROOT_PATH . '/extend/phpqrcode/phpqrcode/phpqrcode.php';
        //Loader::import('phpqrcode/phpqrcode',EXTEND_PATH,'.php');
        $QRcode = new \QRcode();
        // 首先生成一张不带文字的二维码图片
        /*
            原文链接：https://blog.csdn.net/xuander666/article/details/117196815
            参数1:二维码里的内容
            参数2:生成二维码的保存地址
            参数3:二维码可被覆盖的百分比,可以控制二维码的容错率(L->7%, M->15%, Q->25%, H->30%)
            参数4:生成二维码图片的大小
            参数5:控制生成二维码图片的空白区域大小 2
        */
        $errorCorrectionLevel = 'L';    //容错级别
        $matrixPointSize = 5;            //生成图片大小
        $QRcode->png($value, $url, $errorCorrectionLevel, $matrixPointSize, 25);
        $QR = imagecreatefromstring(file_get_contents($url));
        $QR_width = imagesx($QR);      //二维码图片宽度
        $QR_height = imagesy($QR);     //二维码图片高度
        $font = ROOT_PATH .'/extend/phpqrcode/phpqrcode/font/simsun.ttc'; // 字体文件 需要下载字体 msyh.tcc是雅黑字体
        //imagettftext只认utf8字体，所以用iconv转换
        $color = imagecolorallocate($QR, 0, 0, 0);
        $text_height = ($QR_height-100);   //文字起始位置从上到下
        $text_width = ($QR_width/10+44);  //文字起始位置从左到右
        imagettftext($QR, 20, 0, $text_width, $text_height, $color, $font, $content);//调二维码中文字 第一个参数：；第二个参数字体大小；第三个参数：倾斜度数；第四个参数：文字横向起始位置从左向右；第五个参数：文字的纵向起始位置从上到下；第五个参数：文字颜色；第六个参数：字体；第七个参数：文字内容
        //以下是中间logo相关文件，不用logo注释掉就可以

        $logo_image = SystemConfig::where('name','logo_image')->value('value');
//        var_dump($logo_image);exit;
//        $logo_str = strstr($logo_image,'upload');
//        $logo = imagecreatefromstring(file_get_contents(ROOT_PATH . 'public/'.$logo_str));  //源图象连接资源。 //ROOT_PATH . '/public/upload/20230220/a2bd7d5617bc60af9025bbaefe4f0378.jpg'
        $logo = imagecreatefromstring(file_get_contents($logo_image));
        $QR_width = imagesx($QR);			//二维码图片宽度
        $QR_height = imagesy($QR);			//二维码图片高度
        $logo_width = imagesx($logo);		//logo图片宽度

        $logo_height = imagesy($logo);		//logo图片高度
        $logo_qr_width = $QR_width / 9;   	//组合之后logo的宽度(占二维码的1/5)
        $scale = $logo_width/$logo_qr_width;   	//logo的宽度缩放比(本身宽度/组合后的宽度)
        $logo_qr_height = $logo_height/$scale;  //组合之后logo的高度
        $from_width = ($QR_width - $logo_qr_width) / 2;   //组合之后logo左上角所在坐标点
        //重新组合图片并调整大小
        /*
         *	imagecopyresampled() 将一幅图像(源图象)中的一块正方形区域拷贝到另一个图像中
         */
        imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width,$logo_qr_height, $logo_width, $logo_height);



        imagepng($QR, $url);
        imagedestroy($QR);
        imagedestroy($logo);     //如果生成中间logo则打开，否则注释掉
        $qrcode =  'http://' . $_SERVER['HTTP_HOST'] . $tareUrl. '/'. $filename;
    }else{
        $qrcode = 'http://' . $_SERVER['HTTP_HOST'] . $tareUrl .'/'. $filename;
    }
    $evl = 1;
    $tz_url = 'http://sd.fuyexueshe.com/api/evaluation.elist/getUserWxInfo?admin_id=' . $admin_id . '&template_id=' . $template_id. '&qr_id=' . $qr_id .  '&evl=' . $evl;
    $tz_url = urlencode($tz_url);
    return [$qrcode,"https://open.weixin.qq.com/connect/oauth2/authorize?appid=" . $appid . "&redirect_uri=" . $tz_url . "&response_type=code&scope=snsapi_userinfo&forcePopup=true&state=STATE#wechat_redirect"];


}
